package vista;

import negModel.*;
import java.awt.Color;
import java.util.Observable;
import java.util.Observer;

import javax.swing.BorderFactory;
import javax.swing.JTextArea;
import javax.swing.border.Border;

import controlador.Controlador;

public class VistaDatos implements Observer {
	private Modelo modelo;
	private JTextArea displayArea;
	Controlador controlador;
	
	private String newline = System.getProperty("line.separator");
	
	public VistaDatos (Modelo m, Controlador c){
		displayArea = new JTextArea(30,15);
		displayArea.setEditable(false);
		
		
		Border blackLine = BorderFactory.createLineBorder(Color.black);
		displayArea.setBorder(BorderFactory.createTitledBorder(blackLine,"VistaDatos"));
		
		modelo=m;
		controlador= c;
		this.modelo.addObserver(this);
		displayArea.addKeyListener(controlador.getKeyListener());
		displayArea.requestFocus();
	
	}
	public JTextArea getVista(){
		return displayArea;
	}

	private String evaluarDatosDeCarrera(Carrera carrera){
		String visible;
		
		if (!carrera.termino())
			visible = new String("Lleva la delantera: " + carrera.quienVaGanando());
		else
			visible = new String("Ha ganado " + carrera.quienVaGanando() + "."+newline+"Cierre esta ventana para continuar.");
		
		return visible;
	}

	
	public void update(Observable arg0, Object arg1) {
		Auto ajugador= (Auto)modelo.getVehiculoJugador();
		Auto aoponente= (Auto)modelo.getVehiculoOponente();
		Semaforo semaforo= ((Carrera)modelo.getCarreraActual()).getSemaforo();
		String posicion = evaluarDatosDeCarrera(modelo.getCarreraActual());
		
		displayArea.setText("DATOS JUGADOR" +newline+
				"velocidad: " + ajugador.getVelocidad()+ newline +
				   "rpm: " + ajugador.getRpm() + newline +
				   "cambio: " + ajugador.mostrarEstadoDeTransmision()+ newline +
				   "recorrido: " + ajugador.getRecorrido()+newline+newline+newline+"DATOS OPONENTE" +newline+
				"velocidad: " + aoponente.getVelocidad()+ newline +
				   "rpm: " + aoponente.getRpm() + newline +
				   "cambio: " + aoponente.mostrarEstadoDeTransmision()+ newline +
				   "recorrido: " + aoponente.getRecorrido()
				   +newline+newline+newline+ 
				   "CONTEO: " +semaforo.getSegundos()
				   +newline+newline+newline+
				   posicion	   
			
		);
	}
}
